Although computers were once isolated and had minimal or little interaction with other computers, today's computers interact with a wide variety of other computers through communications networks, such as Local Area Networks (LANs) and Wide Area Networks (WANs). With the wide-spread growth of the INTERNET™, connectivity between computers is becoming more important and has opened up many new applications and technologies. The growth of large-scale networks, and the wide-spread availability of low-cost personal computers, has fundamentally changed the way that many people work, interact, communicate, and play.
One increasing popular form of networking may generally be referred to as virtual computing systems, which can use protocols such as Remote Desktop Protocol (RDP), Independent Computing Architecture (ICA), and others to share a desktop and other applications with a remote client. Such computing systems typically transmit the keyboard presses and mouse clicks or selections from the client to a server, relaying the screen updates back in the other direction over a network connection (e.g., the INTERNET). As such, the user has the experience as if their machine is operating as part of a LAN, when in reality the client device is only sent screenshots of the applications as they appear on the server side.
In a remote session, “screen tearing” may occur on a display where a newly rendered frame partially overlaps a previously rendered frame, creating a torn look as two parts of a displayed object do not line up. This most commonly occurs in a remote desktop protocol (RDP) session during periods of rapid drawing, such as for animation or video playback. Screen tearing will become more significant as RDP advances in areas such as bitmap encoding, bulk compression and the transport stack. It would therefore be an improvement over the prior art to group related graphics data to ensure that it is rendered as a single visual unit, as well as to logically batch related drawing orders that should be copied from the shadow buffer to the display surface as a group.